﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using vudu.Datos.SqlServer;
using vudu.Logica.Clases;
using vudu.ClasesDominio;

namespace vudu.Pruebas
{
    [TestFixture]
    public class PruebaEnlaceDeDatosHorarioProfesor
    {
        [Test]
        public void PruebaConsultarSeccionesProfesor()
        {
            Profesor miProfesor = new Profesor();
            miProfesor.Cedula = 14990555;
            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();
            SeccionMateria miSeccion = new SeccionMateria();
            miSeccion.Materia.Nombre = "Algoritmos II";
            List<SeccionMateria> materiasProfesor = new List<SeccionMateria>();
            materiasProfesor = miConexion.ConsultarSeccionesProfesor(miProfesor);

            Assert.IsNotNull(materiasProfesor);
            Assert.AreEqual(materiasProfesor.ElementAt(0).Materia.Nombre, miSeccion.Materia.Nombre);   
        }

        [Test]
        public void PruebaConsultarSeccionesPracticaProfesor()
        {
            Profesor miProfesor = new Profesor();
            miProfesor.Cedula = 4097234;
            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();
            Practica miPractica = new Practica();
            miPractica.NombrePractica = "Practica Evaluacion de Sistemas Informaticos";
            List<Practica> practicaProfesor = new List<Practica>();
            practicaProfesor = miConexion.ConsultarSeccionesPracticaProfesor(miProfesor);

            Assert.IsNotNull(practicaProfesor);
            Assert.AreEqual(practicaProfesor.ElementAt(0).NombrePractica, miPractica.NombrePractica); 

        }

        [Test]
        public void PruebaConsultarDatosSeccionProfesor()
        {

            Profesor miProfesor = new Profesor();
            miProfesor.Cedula = 14990555;
            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();
            SeccionMateria miSeccion = new SeccionMateria();
            miSeccion.Materia.Nombre = "Desarrollo del Software";
            miSeccion.Codigo = 001;
            miSeccion.IdSeccionMateria= 1;
            List<SeccionMateria> materiasProfesor = new List<SeccionMateria>();
            materiasProfesor = miConexion.ConsultarDatosSeccionProfesor(miProfesor, miSeccion);
                
            Assert.IsNotNull(materiasProfesor);
            Assert.AreEqual(materiasProfesor.ElementAt(0).IdSeccionMateria, miSeccion.IdSeccionMateria);
            Assert.AreEqual(materiasProfesor.ElementAt(0).Codigo, miSeccion.Codigo);

        }

        [Test]
        public void PruebaConsultarDatosPracticaProfesor()
        {
            Profesor miProfesor = new Profesor();
            miProfesor.Cedula = 4097234;
            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();
            Practica miPractica = new Practica();
            miPractica.NombrePractica = "Practica Evaluacion de Sistemas Informaticos";
            miPractica.IdPractica = 1;
            miPractica.NumeroSeccion = 1;
            List<Practica> practicaProfesor = new List<Practica>();
            practicaProfesor = miConexion.ConsultarDatosPracticaProfesor(miProfesor,miPractica);

            Assert.IsNotNull(practicaProfesor);
            Assert.AreEqual(practicaProfesor.ElementAt(0).IdPractica, miPractica.IdPractica);
            Assert.AreEqual(practicaProfesor.ElementAt(0).NumeroSeccion, miPractica.NumeroSeccion);
        }

        [Test]
        public void PruebaConsultarHorarioSeccionProfesor()
        {
            Profesor miProfesor = new Profesor();
            miProfesor.Cedula = 14990555;
            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();
            SeccionMateria miSeccion = new SeccionMateria();
            miSeccion.IdSeccionMateria = 1;
            miSeccion.Materia.Nombre = "Desarrollo del Software";
            List<ControladorHorarioDeClase> horarioProfesor = new List<ControladorHorarioDeClase>();
            horarioProfesor = miConexion.ConsultarHorarioSeccionProfesor(miProfesor,miSeccion);
            
            Assert.IsNotNull(horarioProfesor);
            Assert.AreEqual(horarioProfesor.ElementAt(0).SalonDeClase.Nombre, "L2312");
            Assert.AreEqual(horarioProfesor.ElementAt(0).HoraInicio.ToShortTimeString(),"04:00 p.m.");
            Assert.AreEqual(horarioProfesor.ElementAt(0).HoraFin.ToShortTimeString(),"06:00 p.m.");
            Assert.AreEqual(horarioProfesor.ElementAt(0).Dia, "Martes");

        }

        [Test]
        public void PruebaConsultarHorarioPracticaProfesor()
        {
            Profesor miProfesor = new Profesor();
            miProfesor.Cedula = 4097234;
            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();
            Practica miPractica = new Practica();
            miPractica.NombrePractica = "Practica Evaluacion de Sistemas Informaticos";
            miPractica.IdPractica = 1;
            List<ControladorHorarioDeClase> horarioProfesor = new List<ControladorHorarioDeClase>();
            horarioProfesor = miConexion.ConsultarHorarioPracticaProfesor(miProfesor, miPractica);

            Assert.IsNotNull(horarioProfesor);
            Assert.AreEqual(horarioProfesor.ElementAt(0).SalonDeClase.Nombre, "L1205");
            Assert.AreEqual(horarioProfesor.ElementAt(0).HoraInicio.ToShortTimeString(), "10:00 a.m.");
            Assert.AreEqual(horarioProfesor.ElementAt(0).HoraFin.ToShortTimeString(), "12:00 p.m.");
            Assert.AreEqual(horarioProfesor.ElementAt(0).Dia, "Viernes");

        }

        [Test]
        public void PruebaConsultarNombreProfesor()
        {
            Profesor miProfesor = new Profesor();
            miProfesor.Cedula = 14990555;
            miProfesor.Nombre = "Carlo";
            miProfesor.Apellido = "Magurno";
            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();

            List<Profesor> datos = new List<Profesor>();
            datos = miConexion.ConsultarNombreProfesor(miProfesor);

            Assert.IsNotNull(datos);
            Assert.AreEqual(datos.ElementAt(0).Nombre, miProfesor.Nombre);
            Assert.AreEqual(datos.ElementAt(0).Apellido, miProfesor.Apellido);
        }

        [Test]
        public void PruebaConsultarNombreUniversidadMateria()
        {

            SeccionMateria miSeccion = new SeccionMateria();
            miSeccion.IdSeccionMateria = 13;
            
            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();

            String nombreUniversidad = miConexion.ConsultarNombreUniversidadMateria(miSeccion.IdSeccionMateria);

            Assert.AreEqual(nombreUniversidad, "Universidad Catolica Andres Bello");
        }

        [Test]
        public void PruebaConsultarNombreUniversidadPractica()
        {

            Practica miPractica = new Practica();
            miPractica.IdPractica = 4;

            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();

            String nombreUniversidad = miConexion.ConsultarNombreUniversidadPractica(miPractica.IdPractica);

            Assert.AreEqual(nombreUniversidad, "Universidad Catolica Andres Bello");
        }

        [Test]
        public void PruebaConsultarNombreEscuelaMateria()
        {

            Materia miMateria = new Materia();
            miMateria.Codigo = 13;

            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();

            String nombreEscuela = miConexion.ConsultarNombreEscuelaMateria(miMateria.Codigo);

            Assert.AreEqual(nombreEscuela, "Ingeniería Informática");
        }

        [Test]
        public void PruebaConsultarNombreEscuelaPractica()
        {

            Practica miPractica = new Practica();
            miPractica.IdPractica = 4;

            SqlServerHorarioProfesor miConexion = new SqlServerHorarioProfesor();

            String nombreEscuela = miConexion.ConsultarNombreEscuelaPractica(miPractica.IdPractica);

            Assert.AreEqual(nombreEscuela, "Ingeniería Informática");
        }
    }
}